﻿package com.humansampler.jpo.models 
{
	import com.humansampler.jpo.collections.PointCollection;
	import com.humansampler.jpo.events.SampleEvent;
	import flash.events.EventDispatcher;
	
	/**
	 * ...
	 * @author ZoulouX
	 */
	public class PointModel extends EventDispatcher
	{
		// L'instance du model
		protected static var __instance			:PointModel;
		
		// La collection
		protected static var __collection		:PointCollection;
		
		
		// Le getter statique de la collection
		public static function get collection ():PointCollection
		{
			return __collection;
		}
		
		// Le getter statique pour l'instance
		static public function get instance():PointModel
		{
			return __instance;
		}
		
		// Le getter pour la collection
		public function get collection ():PointCollection
		{
			return __collection;
		}
		
		
		/**
		 * 
		 */
		public function PointModel ()
		{
			// Si l'instance n'existe pas
			if (__instance == null)
				__instance = this;
			else throw new Error("Singleton mec!");
			
			// Créer la collection
			__collection = new PointCollection();
		}
		
		// Définir les points
		public function setPoints (pPoints:Vector.<HumanPoint>):void
		{
			// Récupérer les points
			__collection.points = pPoints;
			
			// La longueur n'est pas fixe
			__collection.points.fixed = false;
			
			// Actualiser
			update();
		}
		
		// La collection à été updatée
		public function update ():void
		{
			// Créer l'event
			var sampleEvent:SampleEvent = new SampleEvent(SampleEvent.REFRESH)
			
			// Lui attacher la collection
			sampleEvent.pointsCollection = __collection;
			
			// Dispatcher
			dispatchEvent(sampleEvent);
		}
	}
}